Skip to content

feat(landing): adapt copy to visitor OS + interactive looping demo#36

Merged
GuilhermeVozniak merged 1 commit into
mainfrom
feat/landing-os-aware
May 22, 2026
Merged

feat(landing): adapt copy to visitor OS + interactive looping demo#36
GuilhermeVozniak merged 1 commit into
mainfrom
feat/landing-os-aware

Conversation

@GuilhermeVozniak
Copy link
Copy Markdown
Collaborator

Two landing improvements driven off client-side OS detection.

OS detection (src/lib/use-client-os.ts):

  • detectOS(ua, platform) — pure, unit-tested classifier returning macos / windows / linux / unknown.
  • useClientOS() — resolves after hydration (starts 'unknown' to match the static-export server HTML, avoiding a hydration mismatch).
  • osMeta(os) — label, record-hotkey key tokens (⌘⇧Space on macOS, Ctrl+⇧Space elsewhere), and the manifest field for that OS.

Hero:

  • Primary CTA now reads "Download for macOS/Windows/Linux" based on the detected OS ("Download for your OS" until resolved / when unknown). The link still points at #download — we adapt the copy, never gate the platform, so a mac visitor can still grab the Windows build.

Interactive demo (replaces the static demo.tsx mockup):

  • A faux app window that loops through the real UX beats — idle → recording (waveform pill) → transcribing → word-by-word paste → done → back to idle — instead of shipping a GIF. The idle prompt shows the OS-correct shortcut glyphs. Honors prefers-reduced-motion by rendering the finished state statically, and exposes an initialPhase test seam so the auto-cycle timers stay out of unit tests.

Tests: 15 new (10 detectOS/osMeta, 5 demo phases). Full landing suite 50/50, typecheck + build + lint clean.

Summary

Test plan

  • Unit tests added/updated and passing
  • Integration tests added/updated and passing (where applicable)
  • Manual smoke test (describe what you exercised)

Documentation update obligations (per CONTRIBUTING.md trigger table)

Did this PR trigger any of the following? If yes, the relevant docs are updated in this PR.

  • New STT provider → docs/providers.md, provider grid in landing, pricing entries
  • New model added → provider adapter defaultModels + pricing.lastUpdated
  • Provider rate change → pricing.lastUpdated
  • New Tauri command → docs/architecture.md
  • New slash command → docs/development-workflow.md, root CLAUDE.md
  • New platform → docs/permissions.md, docs/install-<platform>.md, docs/build-and-release.md, docs/ci-cd.md
  • SQLite schema migration → docs/architecture.md
  • Signing/release pipeline change → docs/build-and-release.md, docs/ci-cd.md
  • Threat model change → docs/secrets.md, packages/landing/src/app/privacy/page.tsx
  • New GitHub Secret → docs/build-and-release.md, docs/ci-cd.md
  • None of the above applies to this PR

Breaking changes

Two landing improvements driven off client-side OS detection.

OS detection (src/lib/use-client-os.ts):
- `detectOS(ua, platform)` — pure, unit-tested classifier returning
  macos / windows / linux / unknown.
- `useClientOS()` — resolves after hydration (starts 'unknown' to match
  the static-export server HTML, avoiding a hydration mismatch).
- `osMeta(os)` — label, record-hotkey key tokens (⌘⇧Space on macOS,
  Ctrl+⇧Space elsewhere), and the manifest field for that OS.

Hero:
- Primary CTA now reads "Download for macOS/Windows/Linux" based on the
  detected OS ("Download for your OS" until resolved / when unknown). The
  link still points at #download — we adapt the copy, never gate the
  platform, so a mac visitor can still grab the Windows build.

Interactive demo (replaces the static demo.tsx mockup):
- A faux app window that loops through the real UX beats — idle →
  recording (waveform pill) → transcribing → word-by-word paste → done →
  back to idle — instead of shipping a GIF. The idle prompt shows the
  OS-correct shortcut glyphs. Honors prefers-reduced-motion by rendering
  the finished state statically, and exposes an `initialPhase` test seam
  so the auto-cycle timers stay out of unit tests.

Tests: 15 new (10 detectOS/osMeta, 5 demo phases). Full landing suite
50/50, typecheck + build + lint clean.

Co-Authored-By: WOZCODE <contact@withwoz.com>
@github-actions
Copy link
Copy Markdown

Landing preview will be available at https://bluemacaw.com/previews/pr-36/ once AWS infra lands (Plan D).

@GuilhermeVozniak GuilhermeVozniak merged commit 5635c65 into main May 22, 2026
9 checks passed
@GuilhermeVozniak GuilhermeVozniak deleted the feat/landing-os-aware branch May 22, 2026 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant